Data may be communicated in an integrated circuit according to a variety of protocols. One common way of communicating data in an integrated circuit device is by using synchronous communication. Synchronous communication generally requires using at least one clock signal which is routed to circuit elements of an integrated circuit to enable the communication of data synchronously with the clock signal. However, synchronous communication has a number of drawbacks. In addition to the requirement for a clock circuit network, clock skew may cause problems in implementing the circuit. Additional circuits are often required to address clock skew to ensure that the integrated circuit operates properly. Further, because portions of a circuit may operate at different frequencies, multiple clock signals must be accommodated.
Another method of communicating data in an integrated circuit is by using asynchronous communication, where data is transferred within a circuit without the use of a clock signal. While many different protocols are available for enabling asynchronous communication, conventional protocols are data-driven, and are therefore used to construct deterministic systems. However, deterministic systems are difficult to implement for real-time systems that must react to events from many sources, where the arrival time, ordering and statistical distribution of data is unpredictable.